误导"不使用回调调用异步函数"警告 | 您所在的位置:网站首页 › rpc 异步回调 › 误导"不使用回调调用异步函数"警告 |
NodeJS给了我一个警告 (node:32600)[DEP0013] DeprecationWarning:不建议在不回调的情况下调用异步函数. 当我运行这个'测试'时: describe('whatever', () => { it('test simple', async () => { const dir = './build/fileTests'; if (fs.existsSync(dir)) { console.log(`deleting ${dir}`); await fs.rmdir(dir); } }); });好吧,我几乎同意,使用没有回调的异步函数是不好的(因为只有在cb内你才能确定,它发生了,继续等等...... ...如果不是因为我故意使用ES7 async/await,因为它们使它同步,所以我可以使用我得到的任何东西......(在这种特殊情况下,我可以逃避到rmdirSync,但那不是我的点...) 所以我的问题:如何摆脱这些警告? - 以有意义的方式,当使用async/await时... - 处理返回值,因为const r = ...它不被识别为'回调处理'... 1> 0.sh..: fs.rmdir不返回promise对象,这就是为什么这段代码失败了.您必须使用核心模块中的库或node.js promisify方法来实现它util 注意:如果您对核心模块中的其他异步方法使用相同的方法fs,则会失败 做这个 const util = require("util"); const fs = require("fs"); const removeDir = util.promisify(fs.rmdir); const rmDir = async () => { try { await removeDir("directory_name"); } catch(ex) { console.error(ex) } }只要确保你宣传它 编辑:声明一个变量来保存uti.promisify(fs.rmdir)@bergi建议的值 编辑:使用try .. catch块添加错误处理 请注意,您应该将`util.promisify`调用放在`rmDir`函数之外,并存储结果. 已经做出改变.谢谢@Bergi. |
CopyRight 2018-2019 实验室设备网 版权所有 |